<?php
/**
 这是用PHP+MySQLi生成的JSON格式输出,用于各网站接口,可跨域(并支持JSONP),接收POST或GET请求都可以,但JSONP的参数必须用'callback',并且是GET传参
 请求示例: 
	请求一级城市 :http://域名/php_josn_ajax.php
	请求非一级城市 :http://域名/php_josn_ajax.php?code='上级城市的代码'   //比如要获取湖南省下的所有城市   code=430000000000
	
	请求JSONP示列: http://域名/php_josn_ajax.php?code=430000000000&jsoncallback=abcde
	jquery请求示例: 
		       var url="http://域名/php_josn_ajax.php?code=430000000000&jsoncallback=?";
		        $(function(){
		            $.getJSON(url,function(data){
		                console.log(data);
		            })
		        });
 
 */
//本想用PDO数据连接的....
$link = @new mysqli('localhost','root','root','city_4j_202007',3306);
if($link->connect_errno){
    die('数据库连接出错!');
}
if(empty($_GET['code']) && empty($_POST['code'])){
	$sql = 'SELECT code,name FROM area_table WHERE pid=0 AND sort=1';
	//绑定预处理语句
	$stmt = $link->prepare($sql);
	$stmt->execute();//得到查询结果....
}else{
	$sql = "SELECT code,name FROM area_table WHERE pid=?";
	//绑定预处理语句
	$stmt = $link->prepare($sql);
	$code = '';
	//给语句中的参数绑定类型及变量
	//第一个参数的含义:给占位符号每个?号传值（绑定参数类型） i  d  s  b  表示int double string 二进制
	$stmt->bind_param('s',$code);
	//给变量赋值:POST优先
	$code = empty($_POST['code']) ? $_GET['code'] : $_POST['code'];
	$code = trim($code);//去掉前后空格
	//执行预处理语句
	$stmt->execute();//得到查询结果....
}
//获取查询结果
$result = $stmt->get_result();
//echo $result->num_rows.'<hr />';//得到结果集中行数
//遍历查询结果输出到页面上...
$citys = [];
while($row = $result->fetch_assoc()){
	$citys[$row['code']]=$row['name'];
}
// 指定允许其他域名访问:可跨域
header('Access-Control-Allow-Origin:*'); 
//指定允许访问的方式
header('Access-Control-Allow-Method:GET,POST');//POST,GET'
// 响应头设置 
header('Access-Control-Allow-Headers:x-requested-with,content-type');
//允许跨域传递cookie
//header('Access-Control-Allow-Credentials:true');
if(empty($_GET['jsoncallback'])){
	echo json_encode($citys,JSON_UNESCAPED_UNICODE);
}else{
	$callback = $_GET['jsoncallback'];
	$callback = trim($callback);
	echo $callback.'('.json_encode($citys,JSON_UNESCAPED_UNICODE).');';
	//file_put_contents('test.txt',$callback.'('.json_encode($citys,JSON_UNESCAPED_UNICODE).');');
}






